La communication entre un processeur et son ou ses voisins est organisée par un objet tf3:
A priori on peut regrouper les traitements dans un seul programme qui crée et traite tous les messages (ce sera le 'simulateur').
Le programme est UI_main.py
Il utilise asyncio pour gérer plusieurs tâches
La communication est par l'oreillette.
Le programme 'calcul' envoie à UI un message code '20', qui comporte une liste de codes 'texte' et de nombres formatés. Ce message est également affiché.
Le message est directement affiché et n'est pas dicté.
Ici le pilote tient en main un smartphone, ou utilise le clavier d'un laptop/desktop.
Cet écran ne permet pas d'interaction, mais le pilote peut choisir un affichage:
Ce sont tous les entrées analogiques (sticks, curseurs) ou digitales , qui interviennent dans le programme de calcul pour déterminer la position des gouvernes.
Ces organes de commande sont toujours actifs et gérés par le processeur de calcul.
Les 4 paires de boutons permettent de régler bien plus de paramètres que simplement les trims.
Les commandes menu sont les commandes pour l'émetteur. Ce sont les deux boutons du stick droit (DT5), combinées avec l'état du switch strim.
Ceci décrit mon approche actuelle; une autre approche est possible.
Ceci est géré par le processeur de calcul.
La phase principale est déterminée par le SW4 , à 3 positions, qui définit le rôle du stick M1
Pour le démarrage: choisir dans une liste de modèles celui qui sera utilisé au prochain démarrage, parmi une liste courte qui a été établie avec le menu complet UI.
Permet un arrêt /redémarrage.
Permet un arrêt sans redémarrage (le redémarrage est ultérieur avec le bouton de power-on BA2 )
J'ai prévu un menu pour choisir parmi quelques quelques affichages d'informations sur le lcd, sans dialogue.
Pico RP2040
Développement avec le boitier V5a voir
voir core.dt
exemple : la ligne du fichier de paramètres
"dt3:c:b": ["Ctx:prof","trim"] .
La clé dt3:c:b est composée de 3 parties:
Ensuite la définition du paramètre qui sera modifié : le "trim" de l'objet "Ctx:prof"
La modification est exécutée par le processeur de calcul en tenant compte de la phase de vol.
Quand il commence à régler un paramètre, le processeur de calcul envoie à UI un message à dicter : le nom de l'objet (tel que "Ctx:prof") et le nom du paramètre (tel que 'trim')... ceci pour éviter de se tromper de paramètre!
Au démarrage (mode sol) il est possible de vérifier rapidement quels sont les paramètres réglables en vol.
En mode 'Émetteur posé' il faut utiliser le smartphone pour attribuer les réglages en vol.
Pico RP2040 W (avec wifi) complété par un Dfplayer
voir 3.Sound
cette liste est affichée sur le lcd, un élément par ligne.
Le processeur traite des messages envoyés par le processeur de calcul, les met en forme imprimable , transmet le texte vers le petit lcd et traduit le texte en message dicté.
Tout le traitement de télémétrie
Ici le pilote tient en main un smartphone, ou utilise le clavier d'un laptop/desktop.
Choisir entre plusieurs listes - les variables sont dynamiques
En entrant dans ce menu, le calcul des positions de gouverne n'est plus transmis et est remplacé par une valeur neutre: 1000 µs pour une voie 'moteur' et 1500 µs pour les servos.
Ensuite le menu permet de choisir un canal et d'enregistrer ou modifier les points.
J'envisage un interface tout à fait séparé et qui utilise un laptop, du moins pour commencer et parce que cette solution est disponible et facile.
L'interface UI utilise PySimpleGUI .
Cet interface comporte plusieurs 'tabs'.
Un des tabs comporte les commandes de l'émetteur:
Un watchdog est disponible:
The WDT is used to restart the system when the application crashes and ends up into a non recoverable state.
https://docs.micropython.org/en/latest/library/machine.WDT.html
Mais attention avec WDT: la liaison avec Thonny est perdue...il reste à effacer toute la mémoire flash pour éliminer les programmes. C'est donc difficile à utiliser en test.
Proposition: un cavalier relie deux pins et inhibe la création du wdt, ou une combinaison de boutons, ce qui permet de se connecter à Thonny.
Plus classiquement , micro-python peut détecter des erreurs (try...) et redémarrer, éventuellement par un machine.soft_reset()